package com.yinhai.message.manage.register.bpo;

import java.util.List;

import com.yinhai.core.common.api.base.IPage;
import com.yinhai.core.common.ta3.dto.TaParamDto;
import com.yinhai.message.manage.register.po.EmailConfigPo;
import com.yinhai.message.manage.register.vo.EmailConfigVo;
import com.yinhai.message.manage.sysapp.vo.SysAppVo;

/**
 * Created by maxp on 2017/1/3.
 * modified by lanyc
 */
public interface IEmailConfigBpo {

    /**
     * 获取所有邮箱名列表
     * @return
     */
    List<EmailConfigVo> queryAllEmailConfig();
    
    /**
     * 分页获取所有邮箱名
     * @return
     */
    IPage<EmailConfigPo> queryAllAccountsByPage(TaParamDto dto, int start, int limit, String grid);
    
    /**
     * 保存邮箱配置
     * @param emailConfigPo 封装有邮箱配置信息的PO对象
     */
    Integer addEmailConfig(EmailConfigPo emailConfigPo);
    
    /**
     * 根据邮箱账号删除邮箱配置信息
     * @return
     */
    Integer deleteEmailConfigInfo(String emailAddress);
    
    /**
     * 根据邮箱地址查询邮箱配置信息
     * @param emailAddress 邮箱账号
     * @return
     */
	EmailConfigPo queryEmailCfgByEmailAddress(String emailAddress);
	
	/**
	 * 修改邮箱配置
	 * 当接入系统取消了电子邮件渠道，含有该接入系统依赖的邮箱需要进行更改
	 * @param emailConfigPo
	 */
	Integer updateEmailConfig(EmailConfigPo emailConfigPo);
	
	/**
	 * 验证并修改邮箱配置
	 * 用户在页面更改邮箱的配置后，需要重新进行验证并更新
	 * @param emailConfigPo
	 */
	Integer updateEmailConfigWithValidate(EmailConfigPo emailConfigPo);
	
	/**
	 * 查询所有的接入系统
	 */
	List<SysAppVo> queryAllSystem();
	
	/**
	 * 根据Id查询接入系统
	 */
	SysAppVo querySysById(String id);
	
	/**
	 * 获取默认邮箱
	 */
	EmailConfigVo queryDefaultEmail();
	
	/**
	 * 根据接入系统ID获取邮箱配置
	 */
	EmailConfigVo queryEmailConfigBySystemId(String systemId);
	
	/**
	 * 验证邮箱是否真实有效
	 * @param emailConfigPo
	 * @return
	 */
	Integer validateEmailAddress(EmailConfigPo emailConfigPo);
	
}
